package com.ryder.subject.domain.service;

import com.ryder.subject.common.entity.PageResult;
import com.ryder.subject.domain.entity.SubjectInfoBO;
import com.ryder.subject.infra.basic.entity.SubjectInfoEs;

import java.util.List;

/**
 * 描述: 题目信息表(SubjectInfo)表服务接口
 *
 * @author Ryder
 * @version 1.0
 * @since 1.0 // 版本号，指明从哪个版本开始
 * 更新日期: 2025/02/05
 */

public interface SubjectInfoDomainService {
    /**
     * 添加题目
     *
     * @param subjectInfoBO 实体对象
     * @return 成功：true，失败：false
     */
    void add(SubjectInfoBO subjectInfoBO);

    /**
     * 查询题目列表 分页查询
     *
     * @param subjectInfoBO 实体对象
     * @return PageResult<SubjectInfoBO>
     */
    PageResult<SubjectInfoBO> getSubjectPage(SubjectInfoBO subjectInfoBO);

    /**
     * 查询题目信息
     *
     * @param subjectInfoBO 实体对象
     * @return SubjectInfoBO 对象
     */
    SubjectInfoBO querySubjectInfo(SubjectInfoBO subjectInfoBO);

    /**
     * 全文高亮关键词搜索
     *
     * @param subjectInfoBO 实体对象
     * @return SubjectInfoEs 对象
     */
    PageResult<SubjectInfoEs> getSubjectPageBySearch(SubjectInfoBO subjectInfoBO);

    /**
     * 查询贡献者列表
     *
     * @return List<SubjectInfoBO>
     */
    List<SubjectInfoBO> getContributeList();
}
